升级打怪 | Hive报错 折戟沉沙?(漫画)
The following article is from 个推技术学院 Author 叶上秋
导读:传说中,存在着一个数据王国,每个人都以解决大数据问题为自身之终极目标,并选择最擅长的武器来对付遇到的种种难题,其中hive是他们使用得最多的利器。他们每日修炼,就是为了追上那个被称为hive之神的大佬。
Mr.Tech偷偷潜入王国内部,为大家还原一下大佬与小白之间日常解决hive问题的故事。
作者 个推大数据研发工程师 叶上秋
1
在一个阳光明媚的下午
小白火急火燎地跑过来了
2
又一天清晨
小白又急匆匆地跑来了
分几种情况
一、环形缓冲区空间非常充分,比如map输出的结果数据序列化后有500M,而环形缓冲区设置了1024M,那么map输出的结果数据不会达到1024 * 0.8,因此在map阶段结束后,只会对环形缓冲区的数据快排一次写入磁盘以便后续reduce来取相应partition的数据片。
二、环形缓冲区空间相对充分合理,比如map输出的结果数据序列化后有512M ,而环形缓冲区就设置了500M ,那么map输出的结果数据是一定能达到512M * 0.8的溢写条件,那么就会多快排一次进行溢写磁盘,生成2份文件,最终再进行归并,因为较少次数的溢写磁盘在mapreduce本身的设计上也是相对合理的,因此在任务对堆内存需求比较强烈的情况下,这种方式更适合且性能跟第一种相差不大(算法实现上就是1次快排整体有序 和 (多次快排局部有序 + 1次归并整体有序),而溢写磁盘的次数也不会太多)。
三、环形缓冲区的空间不太充分,比如map输出的结果数据序列化后有500M ,而环形缓冲区就设置了10M(一个比默认值100还低不少的值),那这个时候500M数据的一次快排,就会变成了500M数据N份的多次快排 + 溢写磁盘 + P次的归并,溢写磁盘成为了最大的性能瓶颈,严重地拖慢了map阶段的速度。
☞ Day Day Up . 关注我们提升自己不迷惑,我们下期见啦 ~
进群方式:请加微信(微信号:iom1128),回复:数据,通过审核会拉你进群。
往期推荐